package com.nowcoder.community.util;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

import java.util.Map;
import java.util.UUID;

/**
 * @ClassName CommunityUtil
 * @Description
 * @Author hhwu
 * @Date 2022/5/18 16:51
 * Version 1.0
 **/
public class CommunityUtil {

    // 生成随机字符串
    public static String generateUUID() {
        /**
         * @Author hhwu
         * @Description //TODO 返回的结果是唯一不可重复的
         * @Date 15:13 2022/5/19
         * @Param []
         * @return java.lang.String
         **/
        return UUID.randomUUID().toString().replaceAll("-", "");// 删除随机生成的字符串中的-，只保留数字字母符号
    }

    // MD5加密，注意虽然MD5只能加密不能解密，但是因为MD5对同一个字符串加密的结果始终相同，所以仍然存在安全性问题，因此我们在加密后的密码后拼上一串随机字符
    public static String md5(String key) {
        /**
         * @Author hhwu
         * @Description //TODO 对非空字符串进行MD5加密
         * @Date 9:33 2022/5/19
         * @Param [key]
         * @return java.lang.String
         **/
        if (StringUtils.isBlank(key)) {// pom中引入的包，判读是否为空（空串，空格，null均判为空）
            return null;
        }
        return DigestUtils.md5DigestAsHex(key.getBytes());// 返回MD5加密结果
    }

    public static String getJSONString(int code, String msg, Map<String, Object> map) {
        /**
         * @Author hhwu
         * @Description //TODO 将code, msg, map使用json封装,输入为string类型的json格式的数据
         * @Date 9:33 2022/5/22
         * @Param [key]
         * @return java.lang.String
         **/
        JSONObject json = new JSONObject();
        json.put("code", code);
        json.put("msg", msg);
        if (map != null) {
            for (String key :
                    map.keySet()) {
                json.put(key, map.get(key));
            }
        }
        return json.toJSONString();
    }

    public static String getJSONString(int code, String msg) {
        /**
         * @Author hhwu
         * @Description //TODO 将code, msg使用json封装
         * @Date 9:33 2022/5/22
         * @Param [key]
         * @return java.lang.String
         **/
        return getJSONString(code, msg, null);
    }

    public static String getJSONString(int code) {
        /**
         * @Author hhwu
         * @Description //TODO 将code使用json封装
         * @Date 9:33 2022/5/22
         * @Param [key]
         * @return java.lang.String
         **/
        return getJSONString(code, null, null);
    }
}
